import axios from 'axios'


// const baseUrl = 'http://210.34.58.21:5556'
const baseUrl = process.env.VUE_APP_FLASK_API

/** *
 * 将目录树的node数据转为传输为后端的json
 * @param node_data
 * @param image_path
 * @param image_id
 * @param isVetical
 * @param markTaskId
 * @param image_status
 * @param is_save_temp_data
 */

// ------------------------------------json和图片列表功能--------------------------------

// 获取json任务
export function getJsonList (filepath) {
  const url = baseUrl + '/ocrTask/getJsonList'
  const data = {
    filepath: filepath
  }
  const jsonData = JSON.stringify(data)
  // console.log('发送的数据为：', jsonData)
  return new Promise((resolve, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('返回结果：', response)
      resolve(response)
    }).catch((error) => {
      // console.log('请求getFiles发生错误:', error)
      reject(error)
    })
  })
}

// 获取图片任务
export function getImageList (filepath) {
  const url = baseUrl + '/ocrTask/getImageList'
  const data = {
    filepath: filepath
  }
  const jsonData = JSON.stringify(data)
  // console.log('发送的数据为：', jsonData)
  return new Promise((resolve, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('返回结果：', response)
      resolve(response)
    }).catch((error) => {
      // console.log('请求getFiles发生错误:', error)
      reject(error)
    })
  })
}

// 提交json任务
export function submitTask (name, weight, type, jsonList, save_result_image,is_num_ocr) {
  const url = baseUrl + '/ocrTask/submitTask'
  const data = {
    task_name: name,
    weight: weight,
    type: type,
    jsons_path: jsonList,
    save_result_image: save_result_image,
    is_num_ocr: is_num_ocr
  }
  const jsonData = JSON.stringify(data)
  // console.log('发送的数据为：', jsonData)
  return new Promise((resolve, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('返回结果：', response)
      resolve(response.data)
    }).catch((error) => {
      // console.log('请求getFiles发生错误:', error)
      reject(error)
    })
  })
}

// 未标注图片直接生成任务
export function addImageJsonSubmitTask(task_name, file_list, is_vetical, is_force_update, is_save_result_image, is_num_ocr) {
  const url = baseUrl + '/ocrTask/addImageJsonSubmitTask'
  const jsonData = {
    task_name: task_name,   // 任务名
    file_list: file_list,   // 任务中的所有图片路径
    is_vetical: is_vetical,
    is_force_update: is_force_update,
    is_save_result_image: is_save_result_image, // 是否保存结果图片
    is_num_ocr: is_num_ocr
  }
  console.log('saveMarkData发送的数据为：', jsonData)
  return new Promise((reslove, reject) => {
    axios.post(url, jsonData).then((response) => {
      console.log('saveMarkData返回结果：', response)
      reslove(response.data)
    }).catch((error) => {
      // console.log('发送MarkData发生错误:', error)
      reject(error)
    })
  })
}

// 获取搜索词搜索json文件
export function searchFileByName (rootpath, searchName, type) {
  const url = baseUrl + '/ocrTask/searchFileByName'
  const data = {
    path: rootpath,
    name: searchName,
    type: type
  }
  const jsonData = JSON.stringify(data)
  // console.log('发送的数据为：', jsonData)
  return new Promise((resolve, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('返回结果：', response)
      resolve(response)
    }).catch((error) => {
      // console.log('请求getFiles发生错误:', error)
      reject(error)
    })
  })
}

// 获取分配的图片数量
export function getTaskImageNum (filelist, type) {
  const url = baseUrl + '/ocrTask/getTaskImageNum'
  const data = {
    filelist: filelist,
    type: type
  }
  const jsonData = JSON.stringify(data)
  // console.log('发送的数据为：', jsonData)
  return new Promise((resolve, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('返回结果：', response)
      resolve(response)
    }).catch((error) => {
      // console.log('请求getFiles发生错误:', error)
      reject(error)
    })
  })
}

// --------------------------------查看任务功能--------------------------------
// 获取任务列表
export function getTaskList (page, size, type, order, status, task_name) {
  const url = baseUrl + '/ocrTask/getTaskList'
  const data = {
    page: page,
    size: size,
    type: type,
    order: order,
    status: status,
    task_name: task_name
  }
  const jsonData = JSON.stringify(data)
  // console.log('发送的数据为：', jsonData)
  return new Promise((resolve, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('返回结果：', response.data)
      resolve(response.data)
    }).catch((error) => {
      console.log('请求getFiles发生错误:', error)
      reject(error)
    })
  })
}

// 编辑任务
export function editTaskApi (id, taskName, weight, type, save_result_image) {
  const url = baseUrl + '/ocrTask/updateTask'
  const data = {
    id: id,
    task_name: taskName,
    weight: weight,
    type: type,
    save_result_image: save_result_image
  }
  const jsonData = JSON.stringify(data)
  console.log('发送的数据为：', jsonData)
  return new Promise((resolve, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('返回结果：', response)
      resolve(response.data)
    }).catch((error) => {
      // console.log('请求getFiles发生错误:', error)
      reject(error)
    })
  })
}

// 暂停任务
export function stopTaskApi (id) {
  const url = baseUrl + '/ocrTask/stopTask'
  const data = {
    id: id
  }
  const jsonData = JSON.stringify(data)
  // console.log('发送的数据为：', jsonData)
  return new Promise((resolve, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('返回结果：', response)
      resolve(response.data)
    }).catch((error) => {
      // console.log('请求getFiles发生错误:', error)
      reject(error)
    })
  })
}

// 继续任务
export function continueTaskApi (id, weight) {
  const url = baseUrl + '/ocrTask/continueTask'
  const data = {
    id: id,
    weight: weight
  }
  const jsonData = JSON.stringify(data)
  // console.log('发送的数据为：', jsonData)
  return new Promise((resolve, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('返回结果：', response)
      resolve(response.data)
    }).catch((error) => {
      // console.log('请求getFiles发生错误:', error)
      reject(error)
    })
  })
}

// 删除任务
export function deleteTaskApi (id) {
  const url = baseUrl + '/ocrTask/deleteTask'
  const data = {
    id: id
  }
  const jsonData = JSON.stringify(data)
  // console.log('发送的数据为：', jsonData)
  return new Promise((resolve, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('返回结果：', response)
      resolve(response.data)
    }).catch((error) => {
      // console.log('请求getFiles发生错误:', error)
      reject(error)
    })
  })
}

// 获取识别好后的结果对比图片
export function getResultImage (id) {
  const url = baseUrl + '/ocrTask/getResultImage'
  const data = {
    image_id: id
  }
  const jsonData = JSON.stringify(data)
  console.log('getResultImage：', jsonData)
  return new Promise((resolve, reject) => {
    axios.post(url, jsonData).then((response) => {
      console.log('getResultImage：', response)
      resolve(response.data)
    }).catch((error) => {
      // console.log('请求getFiles发生错误:', error)
      reject(error)
    })
  })
}

// 通过json路径获取图片的路径
export function getImagePath(jsonpath) {
  const url = baseUrl + '/ocrTask/getImagePath'
  const data = {
    jsonpath: jsonpath
  }
  const jsonData = JSON.stringify(data)
  return new Promise((reslove, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log("getImagePath返回结果:",response)
      reslove((response))
    }).catch((error) => {
      reject(error)
    })
  })
}

// 根据任务id查询文件
export function getJsonFilesList (page, size, task_id, status, file_name) {
  const url = baseUrl + '/ocrTask/getFilesByTaskId'
  const data = {
    task_id: task_id,
    page: page,
    size: size,
    status: status,
    file_name: file_name
  }
  const jsonData = JSON.stringify(data)
  // console.log('发送的数据为：', jsonData)
  return new Promise((resolve, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('返回结果：', response.data)
      resolve(response.data)
    }).catch((error) => {
      // console.log('请求getFiles发生错误:', error)
      reject(error)
    })
  })
}

// --------------------------------二次识别--------------------------------
// 获取图片和json数据
export function getImage(filepath,taskId,taskName,is_see_second) {
  const url = baseUrl + '/ocrMark/getImage'
  const data = {
    filepath: filepath,
    taskId: taskId,
    taskName: taskName,
    is_see_second: is_see_second // 是否第二次查看
  }
  const jsonData = JSON.stringify(data)
  // console.log('getImage发送的数据为：', jsonData)
  return new Promise((reslove, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('getImage返回结果：', response)
      reslove((response))
    }).catch((error) => {
      // console.log('请求getBase64发生错误:', error)
      reject(error)
    })
  })
}

// 二次识别标注的暂存和上传修改
export function saveMarkDataRepate(image_path, isVetical, node_data, is_comfirm, task_id, image_id) {
  const url = baseUrl + '/ocrMark/saveMarkDataRepate'
  const jsonData = {
    image_path: image_path, // 图片路径
    is_vetical: isVetical,  // 排版方向
    node_data: node_data, // 修改后的node_data
    // lastSaveJsonPath: lastSaveJsonPath,   // 该图片识别后的json所在位置
    is_comfirm: is_comfirm, // 暂存或修改
    task_id: task_id,
    image_id: image_id
    // task_name: task_name, // 任务
    // taskId: taskId
  }
  console.log('saveMarkDataRepate发送的数据为：', jsonData)
  return new Promise((reslove, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('saveMarkDataRepate返回结果：', response)
      reslove(response.data)
    }).catch((error) => {
      // console.log('发送MarkData发生错误:', error)
      reject(error)
    })
  })
}

// 查看状态
export function getNowStatus(task_id, file_id) {
  const url = baseUrl + '/ocrMark/getNowStatus'
  const jsonData = {
    task_id: task_id,
    file_id: file_id
  }
  console.log('saveMarkDataRepate发送的数据为：', jsonData)
  return new Promise((reslove, reject) => {
    axios.post(url, jsonData).then((response) => {
      // console.log('saveMarkDataRepate返回结果：', response)
      reslove(response.data)
    }).catch((error) => {
      // console.log('发送MarkData发生错误:', error)
      reject(error)
    })
  })
}
